/* 
2. getter和setter

Object.defineProperty 可定义某个对象成员属性的读取和设置

使用getter和setter控制的属性，不在原型上

*/
class Animal {
    constructor(type, name, age, sex) {
        this.type = type;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    //创建一个age属性，并给他加上getter属性，读取属性的时候会执行
    get age() {
        return this._age + "岁"
    }
    //创建一个age属性，并给它加上setter，给该属性赋值时，会运行该函数
    set age(age) {
        this._age = age
    }
}
var a = new Animal("狗", "旺财", 3, "男");
/* age是提供给外部访问的属性，它通过 getter 和 setter 来控制访问和修改行为 */
console.log(a.age);
/* 输出：3（原始数值，没有经过getter处理） */
console.log(a._age);



